package security;

import java.security.MessageDigest;

/**
 * this class provide methods about encryption
 * @author Shi Mengjie
 * @version 1.0
 */
public final class Encryption {
	private final static String[] hexDigits = {"0", "1", "2", "3", "4", "5", "6", "7","8", "9", "a", "b", "c", "d", "e", "f"}; 
	/** 
	 * 转换字节数组为16进制字串 
	 * @param b 字节数组 
	 * @return 16进制字串 
	 */ 
	public static String byteArrayToHexString(byte[] b) 
	{ 
	   StringBuffer resultSb = new StringBuffer(); 
	   for (int i=0; i<b.length; i++) 
	   { 
	    resultSb.append(byteToHexString(b[i])); 
	   } 
	   return resultSb.toString(); 
	} 
	/** 
	 * 转换byte到16进制 
	 * @param b 字节
	 * @return 16进制字串 
	 */ 
	private static String byteToHexString(byte b) 
	{ 
	   int n=b; 
	   if (n<0) 
	   { 
	    n=256+n; 
	   } 
	   int d1=n/16; 
	   int d2=n%16; 
	   return hexDigits[d1]+hexDigits[d2]; 
	}
	/**
	 * method getMD5(String str) will return the MD5 value of str
	 * @param str
	 * @return MD5 value in String type
	 */
	public static String getMD5(String str){
		String ret = null;
		try{
			ret = new String(str);
			MessageDigest md = MessageDigest.getInstance("MD5");
			ret=byteArrayToHexString(md.digest(ret.getBytes())); 
		}catch(Exception e){
			e.printStackTrace();
		}
		return ret;
	}
	/*
	 * test MD5 value
	public static void main(String args[]){
		String str = "The quick brown fox jumps over the lazy dog";
		System.out.println(getMD5(str));
	}
	*/
}

